iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
佛心分享-SideProject30

營養師想做一個飲食建議產品系列 第 20 篇

Day20 - AI 最大的問題其實不是 AI,而是資料

  • 分享至 

  • xImage
  •  

Prompt 寫得再好,AI 也不知道一份「蔥鹽雞肉沙拉」的真實碳水量

Day19 講完 hallucination 的本質:為什麼不能相信 AI 給的營養數字。這篇要再往前問一步——AI 為什麼會給錯? 很多時候不是它不夠聰明,而是它手上根本沒有正確答案可以參考。

🧱 地基概念

「知識」跟「事實」是兩種不同的東西

AI 學到的是「知識」:漢堡大概是高熱量食物、蔬菜大多低熱量,這類常識它很清楚。但系統需要的是「事實」:某一家店的某一個品項,精確是幾大卡、幾克蛋白質。這種具體數字,只有品牌官網的營養標示才有,AI 沒看過,也不可能生成出正確的版本。

可以用考試來比喻:閉卷考試靠記憶作答,開書考試可以翻課本查表。 早期的菜單生成,等於叫 AI 閉卷回答;後來的做法,是幫它把課本準備好。

什麼是 grounding?拆開來看

ground 原本是「地面、根基」的意思。AI 沒有依據時,答案像是飄在空中,不知道是真是假;grounding 就是把答案「落到地面」,給它一個可以踩穩、可以回頭核對的基礎。這個觀念只有三步:

  1. 先準備資料:準備一份可信的資料。
  2. 把資料一起給 AI:把資料貼進 prompt,和問題一起送出去。
  3. 要求 AI 只能依這份資料作答:它的工作從「憑印象回答」變成「從資料裡挑、整理」。

用這個專案的例子對照看看(示意):

沒有 grounding(閉卷):

問 AI:「幫我安排今天的午餐。」
AI 答:「建議吃鮪魚飯糰,約 180 大卡。」  ← 哪一家的飯糰?180 從哪來?沒人知道

有 grounding(開書):

問 AI:「這是今天的候選食物清單(附編號與官方標示),請從裡面挑午餐。」
AI 答:「我選編號 711-001。」  ← 程式用這個編號查回真實的營養資料

差別不在於 AI 變聰明了,而是答案的來源變了:原本是 AI 腦裡的印象,現在是我們手上有出處、可以查的資料。

兩件常見的誤解:

  • grounding 不是讓 AI 變得更聽話或更聰明,而是改變它「從哪裡拿答案」。
  • grounding 不等於完全不會出錯。AI 仍可能挑到不適合的食物,所以後面還是需要程式碼重新計算、驗證(見 Day19)。

(補充:這類「先找資料、再給 AI 回答」的做法,常會聽到 RAG 這個名詞,概念相近。初學時先記住 grounding 這個「讓答案有依據」的核心就夠了。)

那讓 AI 自己上網搜尋,不行嗎?

不過依據平常用 ChatGPT 的經驗,它明明有時也會到網路搜尋資料,還會顯示「正在搜尋某某網站」。這其實也是 grounding 的一種(有人稱為搜尋式 grounding),所以「AI 查資料」這件事本身是真的存在、也有用的。那為什麼這個專案還要自己建一份 Food DB?因為搜尋只解決了「AI 手上有沒有資料」,沒有解決下面這幾件事:

  • 搜到之後,還是 AI 自己「讀完再轉述」:
    它可能抓錯欄位、把整盒的熱量當成一份,或把別的品項數字混進來。幻覺從「憑印象編」變成「讀錯再編」,風險降低了,但沒有消失。
  • 來源品質不一:
    同一個品項,可能搜到官網、部落格、健身 App,數字各不相同,還可能是舊版資料。AI 沒有標準判斷哪個才對。
  • 一樣不可重現:
    同一個問題問兩次,這次搜到 A 網站、下次搜到 B 網站,數字就不同,跟 Day19 的問題一樣。
  • 我們需要「程式能直接計算」的資料:
    網頁是雜亂的文字,而我們要的是固定欄位、有編號的結構化資料,才能用代換表公式精確算出六大類份數(見 Day18)。
  • 我們要「先篩選再給 AI」:
    菜單要符合每餐的熱量預算、使用者的忌口和餐次規則(例如早餐不要出現水餃),這是程式先從 Food DB 篩出候選清單再給 AI,網路搜尋做不到這種精準控制。
  • 速度與成本:
    這個專案跑在 API Gateway 上,有 29 秒的回應時間上限,每餐都上網搜尋會拖慢、變貴,還可能失敗;查自己的資料庫快又穩。

簡單說,搜尋是「請 AI 自己去圖書館找書」,而 Food DB 是「我們先把正確的書擺在它桌上,而且只讓它從這幾本挑」。

🔧 實際操作

早期版本:AI 自己估算,哪裡出了問題

最早的菜單生成,AI 只能靠自己的知識估算「一個麥當勞漢堡大概有多少熱量」。對簡單的食物(一顆蛋、一片吐司)還算堪用;但對複合菜色(一個漢堡、一個便當)風險就很大,因為 AI 對「這個品牌的這個品項」根本沒有精確資料,它給的數字本質上是憑常識推測,跟「查表得到的真實數字」是兩回事。

後來的轉變:建一份真實食物資料庫(Food DB)

解決 hallucination 不能只靠「叫 AI 小心一點」或「把 prompt 寫得更精確」。真正的解法是給它一份可信的資料可以查:把品牌官網的營養標示整理成資料庫,菜單生成時先從裡面篩出候選食物,AI 只負責在候選清單裡挑選(這就是 Day15 講的第二次呼叫的輸入之一)。

比較項目 早期版本 加入 Food DB 之後
AI 的角色 憑印象估算食物的營養 從已知正確的候選清單裡挑選
數字的來源 AI 的常識推測 品牌官網的營養標示
風險 複合菜色的數字容易失真 數字有出處,可以回頭查證

小結

這篇的重點是一個心態上的轉變:AI 最大的問題不一定是它不夠聰明,而是它手上沒有正確答案。 與其期待 AI 生成事實,不如先把事實準備好,再遞給它。接下來要分享的,就是這份 Food DB 從設計、蒐集到存放的完整過程,下一篇先從「資料要長什麼樣子」開始。


上一篇
Day19 - Hallucination:為什麼不能完全相信 AI ?
下一篇
Day21 - Food Database 要長什麼樣子?
系列文
營養師想做一個飲食建議產品 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言